隨著信息技術的逐漸發展,數據出現指數型的增長。我們知道數據的種類很多,分類方式也有很多種,有以用戶對象來分類的,如政務數據、行業數據、個人數據;有以數據存儲形式分類的,如先前推文介紹過的結構化數據、半結構化數據和非結構化數據。還有一種分類方法,則是將數據分為冷數據、溫數據和熱數據,難道數據還有溫度?
數據為什么要區分“冷”和“熱”?
根據數據被訪問使用的頻次,數據可以被分為熱數據、溫數據和冷數據。顯然數據肯定是沒有溫度的,那么為什么會有“冷”、“熱”的說法呢?
熱數據
熱數據是需要被計算節點頻繁訪問的在線類數據,比如可以是半年以內的數據,用戶經常會查詢它們,適合放在數據庫中存儲,比如MySql、MongoDB和HBase。
冷數據
冷數據是指離線類不經常訪問的數據,用于災難恢復的備份或者因為要遵守法律規定必須保留一段時間,比如企業備份數據、業務與操作日志數據、話單與統計數據。通常會存儲在性能較低、價格較便宜的文件系統里,適用于離線分析,比如機器學習中的模型訓練或者大數據分析。
圖:冷數據和熱數據的區別,來源于微博@聯想企業級服務
總結一下,熱數據就是訪問量多的數據,而冷數據則基本沒有什么存在感和訪問量。比如在訂單管理中,熱數據就是指3個月以內的訂單數據,查詢時效性較高;而冷數據就是指1年前的訂單數據,只會有偶爾的查詢需求,其他時間幾乎不會被用到。
其實區分冷熱數據的根本目的,在于能節省數據存儲成本和提升在線數據查詢性能,即控制成本。
為什么這么說?因為通常情況下,為了支持熱數據的操作特性,需要有較好的硬件配置,比如高性能CPU、大內存、SSD硬盤等等。隨著時間的推移,系統里會積累越來越多的歷史數據,如果依然采用高配置機器來存放這些使用頻率非常低的數據,勢必會帶來非常高的成本。當然,如果數據量很小或者不計成本,那完全不需要考慮冷熱區分,采用一個單體系統就可以應對所有事情了。
數據如何冷熱分離?
相信看到這里,大家對冷數據、溫數據和熱數據的概念已經很清晰了,那么有人可能會好奇,對于不同“溫度”的數據,平時是如何存儲的呢?
由于冷數據和熱數據的訪問頻次不同,就導致了在數據庫搭建的各自不同:熱數據因為訪問頻次需求大,效率要求高,所以就近計算和部署;冷數據訪問頻次低,效率要求慢,可以做集中化部署,而基于大規模存儲池里,可以對數據進行壓縮、去重等降低成本的方法。
總結成一句話就是:熱數據就近計算,冷數據集中存儲。
從存儲形式來說,一般情況冷數據存儲在磁帶、光盤,目前發展比較好的是藍光光盤。熱數據一般存放在SSD中,存取速度快,而溫數據可以存放在7200轉的硬盤。
目前比較常見的冷熱分離方案是將冷熱數據分離到兩套不同的系統,這兩套系統擁有不同的存儲特性、訪問方式等,從而在保證熱數據訪問性能的同時,將冷數據的成本降低下來。
相比單體系統而言,將冷熱數據分離到兩個系統中,必然會帶來整體的復雜性,需要在性能、成本、復雜度等因素之間做的一個權衡。實踐中,通常需要結合具體的業務,考慮下面幾件事:
冷熱數據系統的選型
確定冷熱數據分割線
如何進行數據的遷移
如何應對跨系統的查詢
數據作為企業的核心資產之一雖然已受到廣泛的認可和重視,但是分析技術的落后尚不具備充分提取冷數據價值的能力,因此很多公司對利用率高的熱數據重視而忽視冷數據,這也符合常規企業成本的考量。隨著數據分析和數據挖掘技術的進步,歷史數據的可用價值將得到顯著的提升,這樣冷數據的存儲需求會迎來快速增長。隨著技術發展,會有越來越多的系統走向冷熱分離系統,從而簡化整體的復雜性,在業務層表現為統一的訪問方式。
更多資訊,請關注“成都吉福匯”,服務熱線:400 028 4366/028-85538251